/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package produto;

import constantes.ProdutoConst;
import java.util.HashMap;
import java.util.Set;
import java.util.Vector;
import padroes.Registro;

/**
 *
 * @author atavares
 */
public class Produto extends Registro{
    
    
    public Produto(){
        super("produto");
        adicionarChavePrimaria(ProdutoConst.IDPRODUTO);
    }
    public Produto(int idProduto, String nomeProduto, String descricaoProduto, float precoProduto,
                   int qtdProduto, String garantiaProduto, float heightProduto, float larguraProduto,
                   float profundidadeProduto, String disponibilidadeProduto, int subcategoriaProduto, float pesoProduto)
    {
        this();
        this.set(ProdutoConst.IDPRODUTO, idProduto);
        this.set(ProdutoConst.NOME, nomeProduto);
        this.set(ProdutoConst.DESCRICAO, descricaoProduto);
        this.set(ProdutoConst.PRECO, precoProduto);
        this.set(ProdutoConst.QTD, qtdProduto);
        this.set(ProdutoConst.GARANTIA, garantiaProduto);
        this.set(ProdutoConst.HEIGHT, heightProduto);
        this.set(ProdutoConst.LARGURA, larguraProduto);
        this.set(ProdutoConst.PROFUNDIDADE, profundidadeProduto);
        this.set(ProdutoConst.DISPONIBILIDADE, disponibilidadeProduto);
        this.set(ProdutoConst.SUBCATEGORIA, subcategoriaProduto);
        this.set(ProdutoConst.PESO, pesoProduto);
    }

    public Produto(HashMap<String,Object> campos)
    {
        this();
        this.setCampos(campos);
    }

    public Boolean match(Produto criterio, Boolean operador)
    {
        Boolean opAnd = true, opOr = false;
        return (!operador && opAnd) || (!operador && opOr);
    }

    /**
     * @return the id
     */
    public int getId() {
        Integer valor = (Integer)get(ProdutoConst.IDPRODUTO);
        return valor.intValue();
    }

    /**
     * @return the nome
     */
    public String getNome() {
        String valor = (String)get(ProdutoConst.NOME);
        return valor;
    }

    /**
     * @return the nome
     */
    public String getDescricao() {
        String valor = (String)get(ProdutoConst.DESCRICAO);
        return valor;
    }

    /**
     * @return the nome
     */
    public float getPreco() {
        Float valor = (Float)get(ProdutoConst.PRECO);
        return valor.floatValue();
    }

    /**
     * @return the nome
     */
    public int getQtd() {
        Integer valor = (Integer)get(ProdutoConst.QTD);
        return valor.intValue();
    }

    /**
     * @return the nome
     */
    public String getGarantia() {
        String valor = (String)get(ProdutoConst.GARANTIA);
        return valor;
    }

    /**
     * @return the nome
     */
    public float getLargura() {
        Float valor = (Float)get(ProdutoConst.LARGURA);
        return valor.floatValue();
    }

    /**
     * @return the nome
     */
    public float getProfundidade() {
        Float valor = (Float)get(ProdutoConst.PROFUNDIDADE);
        return valor.floatValue();
    }

    /**
     * @return the nome
     */
    public String getDisponibilidade() {
        String valor = (String)get(ProdutoConst.DISPONIBILIDADE);
        return valor;
    }

    /**
     * @return the nome
     */
    public int getSubcategoria() {
        Integer valor = (Integer)get(ProdutoConst.SUBCATEGORIA);
        return valor.intValue();
    }

     /**
     * @return the nome
     */
    public float getPeso() {
        Float valor = (Float)get(ProdutoConst.PESO);
        return valor.floatValue();
    }

    /**
     * @param id the id to set
     */
    public void setId(int idProduto) {

        set(ProdutoConst.IDPRODUTO, idProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nomeProduto) {
        set(ProdutoConst.NOME, nomeProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setDescricao(String descricaoProduto) {
        set(ProdutoConst.DESCRICAO, descricaoProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setPreco(float precoProduto) {
        set(ProdutoConst.PRECO, precoProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setQuantidade(int quantidadeProduto) {
        set(ProdutoConst.QTD, quantidadeProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setGarantia(String garantiaProduto) {
        set(ProdutoConst.GARANTIA, garantiaProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setAltura(float alturaProduto) {
        set(ProdutoConst.HEIGHT, alturaProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setLargura(float larguraProduto) {
        set(ProdutoConst.LARGURA, larguraProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setProfundidade(float profundidadeProduto) {
        set(ProdutoConst.PROFUNDIDADE, profundidadeProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setDisponibilidade(String disponibilidadeProduto) {
        set(ProdutoConst.DISPONIBILIDADE, disponibilidadeProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setSubcategoria(int subcategoriaProduto) {
        set(ProdutoConst.SUBCATEGORIA, subcategoriaProduto);
    }

    /**
     * @param nome the nome to set
     */
    public void setPeso(float pesoProduto) {
        set(ProdutoConst.PESO, pesoProduto);
    }


    @Override
    public String toString()
    {
        Vector<String> nomesCampos = new Vector<String>();
        nomesCampos.add(ProdutoConst.IDPRODUTO);
        nomesCampos.add(ProdutoConst.NOME);
        nomesCampos.add(ProdutoConst.DESCRICAO);
        nomesCampos.add(ProdutoConst.PRECO);
        nomesCampos.add(ProdutoConst.QTD);
        nomesCampos.add(ProdutoConst.GARANTIA);
        nomesCampos.add(ProdutoConst.HEIGHT);
        nomesCampos.add(ProdutoConst.LARGURA);
        nomesCampos.add(ProdutoConst.PROFUNDIDADE);
        nomesCampos.add(ProdutoConst.DISPONIBILIDADE);
        nomesCampos.add(ProdutoConst.SUBCATEGORIA);
        nomesCampos.add(ProdutoConst.PESO);
        

        Vector<String> valores = new Vector<String>();

        for(int i = 0; i < nomesCampos.size(); i++)
        {
            valores.add("");
        }
        String resultado = "";
        String campo = "";

        for(String chave:getCampos().keySet())
        {
            if (getCampos().get(chave) == null)
                campo = "";
            else
                campo = getCampos().get(chave).toString();
            valores.setElementAt(campo, nomesCampos.indexOf(chave));
        }

        for(int i = 0; i < nomesCampos.size(); i++)
        {
            resultado += valores.elementAt(i) + "§";
        }
        resultado = resultado.substring(0, resultado.length()-1);
        return resultado;
    }

    /*@Override
    public boolean equals(Object obj)
    {
        Set<String> campos2 = getCampos().keySet();
        for(String chave:campos2)
        {
            if(getCampos().get(chave) instanceof String)
                getCampos().get(chave).

        }
    }

    @Override
    public int hashCode() {
        int hash = 3;
        return hash;
    }*/
}

